In modern software development, project managers typically gather, communicate, and manage the project requirements in order to help ensure the software project completes successfully. Requirements are best described as those attributes or behaviors that a software project should exhibit when completed (e.g. the solution should process 300 transactions per second, the solution should have only green buttons, the solution should have these screens, etc.). To a large extent, the success or failure of a software project is measured by the customer on how well that project has met its requirements.
Requirements management systems have been created, in part, to help ease the difficulty in communicating and managing requirements. Such systems allow a user to enter requirements and describe what parts of the software project those requirements go with. The requirements are not static, and evolve over time as the software project further develops. As these requirements evolve over time, it is difficult to determine the impact the changes in requirements have on the actual underlying software project.